{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Домашнее задание к лекции Работа с файловой системой и модули"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Переведите содержимое файла purchase_log.txt в словарь purchases вида:\n",
    "{‘1840e0b9d4’: ‘Продукты’, …}\n",
    "\n",
    "Для каждого user_id в файле visit_log.csv определите третий столбец с категорией покупки (если покупка была, сам файл visit_log.csv изменять не надо). Запишите в файл funnel.csv визиты из файла visit_log.csv, в которых были покупки с указанием категории.\n",
    "\n",
    "Учтите условия на данные:\n",
    "- содержимое purchase_log.txt помещается в оперативную память компьютера\n",
    "- содержимое visit_log.csv - нет; используйте только построчную обработку этого файла"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "user_id,source,category\n",
      "1840e0b9d4,other,Продукты\n",
      "4e4f90fcfb,context,Электроника\n",
      "afea8d72fc,other,Электроника\n",
      "2824221f38,email,Продукты\n",
      "373a6055fe,other,Бытовая техника\n",
      "9b2ab046f3,other,Электроника\n",
      "9f39d307c3,context,Электроника\n",
      "44edeffc91,context,Продукты\n",
      "704474fa2d,other,Продукты\n",
      "1de31be403,other,Бытовая техника\n",
      "5da0dedf13,context,Досуг\n",
      "b71f36a5e4,other,Продукты\n",
      "79843a685a,context,Продукты\n",
      "ff68cee0d6,context,Бытовая техника\n",
      "e8447c40e2,email,Досуг\n",
      "b9ef8fdf47,other,Продукты\n",
      "98d290be27,other,Электроника\n",
      "3fff459bda,other,Электроника\n",
      "fa0079a5a8,other,Досуг\n",
      "fdd6b2fc76,context,Бытовая техника\n",
      "54ecd881a2,other,Бытовая техника\n",
      "22d2f03a17,context,Досуг\n",
      "c9fa1b54d5,other,Продукты\n",
      "3f8e1ccd3f,other,Электроника\n",
      "81a9988b83,context,Электроника\n",
      "65f44a2eb7,context,Досуг\n",
      "6df948569b,other,Бытовая техника\n",
      "5f8fbb0149,other,Бытовая техника\n",
      "3ecff691fd,context,Электроника\n"
     ]
    }
   ],
   "source": [
    "import json\n",
    "import os.path\n",
    "import csv\n",
    "\n",
    "with open(f'files{os.path.sep}purchase_log.txt', 'r', encoding='utf-8') as f:\n",
    "    content = f.readlines()\n",
    "purchase_dict = {}\n",
    "for index, line in enumerate(content):\n",
    "    if index == 0:\n",
    "        continue\n",
    "    line_dict = json.loads(line.strip())\n",
    "    purchase_dict[line_dict['user_id']] = line_dict['category']\n",
    "\n",
    "with open(f'files{os.path.sep}visit_log.csv', 'r', encoding='utf-8') as s_file:\n",
    "    s_reader = csv.DictReader(s_file)\n",
    "    with open(f'files{os.path.sep}funnel.csv', 'w', newline='', encoding='utf-8') as d_file: \n",
    "        for index, s_line in enumerate(s_reader):\n",
    "            if index == 0:\n",
    "                fieldnames = list(s_line.keys()) + ['category']\n",
    "                d_writer = csv.DictWriter(d_file, fieldnames=fieldnames)\n",
    "                d_writer.writeheader()\n",
    "            category_value = purchase_dict.get(s_line['user_id'])\n",
    "            if not category_value:\n",
    "                continue\n",
    "            s_line['category'] = category_value\n",
    "            d_writer.writerow(s_line)\n",
    "            \n",
    "# Вывод 30 первых строк funnel.csv\n",
    "with open(f'files{os.path.sep}funnel.csv', 'r', encoding='utf-8') as f:\n",
    "    for index, line in enumerate(f):\n",
    "        if index >= 30:\n",
    "            break\n",
    "        print(line, end='')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
